/*
 * 注意自行配置HttpHandler.hpp中BASE_URL为您自己的域名或IP地址+端口号
*/

#include "../include/InitHandler.hpp"
#include "../include/file_path_utils.hpp"
#include "../include/config_manager.hpp"
#include <iostream>
#include <string>

using namespace xzt;

int main()
{
    Server svr;

    // 添加 CORS 支持的中间件
    svr.set_default_headers({{"Access-Control-Allow-Origin", "*"},
                             {"Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"},
                             {"Access-Control-Allow-Headers", "Content-Type, Authorization"}});

    // 允许 OPTIONS 请求（不需要再重复设置 CORS 头）
    svr.Options(".*", [](const httplib::Request &, httplib::Response &res)
                {
                    res.status = 204; // OPTIONS 请求不需要多余处理，只返回 204 状态即可
                });

    // 设置静态文件目录，以便前端访问图片文件
    configureStaticFiles(svr);

    xzt::InitHandler::DoInit(svr);

    const auto& config = ConfigManager::getInstance();
    const auto port = config.getServerPort();
    std::cout << "Server started at http://0.0.0.0:" << std::to_string(port) << std::endl;
    svr.listen("0.0.0.0", port);

    return 0;
}